package com.powerbank.usercenter.service;

import com.powerbank.usercenter.dto.UserLoginDTO;
import com.powerbank.usercenter.dto.UserRegisterDTO;
import com.powerbank.usercenter.vo.UserLoginVO;

/**
 * 认证服务接口
 */
public interface AuthService {

    /**
     * 短信验证码登录
     */
    UserLoginVO loginBySms(UserLoginDTO loginDTO);

    /**
     * 密码登录
     */
    UserLoginVO loginByPassword(UserLoginDTO loginDTO);

    /**
     * 用户注册
     */
    UserLoginVO register(UserRegisterDTO registerDTO);

    /**
     * 刷新Token
     */
    UserLoginVO refreshToken(String refreshToken);

    /**
     * 验证Token
     */
    boolean verifyToken(String token);

    /**
     * 登出
     */
    void logout(Long userId);

    /**
     * 发送短信验证码
     */
    void sendSmsCode(String phone, String type);

    /**
     * 验证短信验证码
     */
    boolean verifySmsCode(String phone, String code, String type);

    /**
     * 重置密码
     */
    void resetPassword(String phone, String smsCode, String newPassword);

    /**
     * 生成JWT Token
     */
    String generateToken(Long userId, String username, String userType);

    /**
     * 解析Token
     */
    Long parseToken(String token);

    /**
     * 将Token加入黑名单
     */
    void blacklistToken(String token);
}